From c82d714c9c5f9a5f924e21f06c436d8794c3eca4 Mon Sep 17 00:00:00 2001 From: "kaf24@firebug.cl.cam.ac.uk" Date: Tue, 4 Apr 2006 15:06:38 +0100 Subject: [PATCH] With the standard (XEN) prefix and the setting of 8 words per line, stack dumps on i386 came out at 81 characters per line. The change to xen/arch/x86/traps.c makes this 80 (without changing the look on the screen), and the change to xen/drivers/char/console.c arranges for soft line breaks not getting duplicated by hard line breaks, so displaying 80 characters per line doesn't result in a subsequent blank line. From: Jan Beulich Signed-off-by: Keir Fraser --- xen/arch/x86/traps.c | 14 +++++++------- xen/drivers/char/console.c | 5 +++-- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/xen/arch/x86/traps.c b/xen/arch/x86/traps.c index 95e44db6d9..2856f75a0c 100644 --- a/xen/arch/x86/traps.c +++ b/xen/arch/x86/traps.c @@ -138,13 +138,13 @@ static void show_guest_stack(struct cpu_user_regs *regs) if ( vm86_mode(regs) ) { stack = (unsigned long *)((regs->ss << 4) + (regs->esp & 0xffff)); - printk("Guest stack trace from ss:sp = %04x:%04x (VM86)\n ", + printk("Guest stack trace from ss:sp = %04x:%04x (VM86)\n ", regs->ss, (uint16_t)(regs->esp & 0xffff)); } else { stack = (unsigned long *)regs->esp; - printk("Guest stack trace from "__OP"sp=%p:\n ", stack); + printk("Guest stack trace from "__OP"sp=%p:\n ", stack); } for ( i = 0; i < (debug_stack_lines*stack_words_per_line); i++ ) @@ -160,8 +160,8 @@ static void show_guest_stack(struct cpu_user_regs *regs) break; } if ( (i != 0) && ((i % stack_words_per_line) == 0) ) - printk("\n "); - printk("%p ", _p(addr)); + printk("\n "); + printk(" %p", _p(addr)); stack++; } if ( i == 0 ) @@ -257,16 +257,16 @@ void show_stack(struct cpu_user_regs *regs) if ( guest_mode(regs) ) return show_guest_stack(regs); - printk("Xen stack trace from "__OP"sp=%p:\n ", stack); + printk("Xen stack trace from "__OP"sp=%p:\n ", stack); for ( i = 0; i < (debug_stack_lines*stack_words_per_line); i++ ) { if ( ((long)stack & (STACK_SIZE-BYTES_PER_LONG)) == 0 ) break; if ( (i != 0) && ((i % stack_words_per_line) == 0) ) - printk("\n "); + printk("\n "); addr = *stack++; - printk("%p ", _p(addr)); + printk(" %p", _p(addr)); } if ( i == 0 ) printk("Stack empty."); diff --git a/xen/drivers/char/console.c b/xen/drivers/char/console.c index dc06857007..2755f5e46b 100644 --- a/xen/drivers/char/console.c +++ b/xen/drivers/char/console.c @@ -200,10 +200,11 @@ static void putchar_console(int c) } else { + if ( xpos >= COLUMNS ) + put_newline(); video[(xpos + ypos * COLUMNS) * 2] = c & 0xFF; video[(xpos + ypos * COLUMNS) * 2 + 1] = ATTRIBUTE; - if ( ++xpos >= COLUMNS ) - put_newline(); + ++xpos; } } -- 2.30.2